'''
为了统计学生人数，可以给 Student 类增加一个类属性，
每创建一个实例，该属性自动增加：
class Student(object):
    count = 0
    def __init__(self, name):
    self.name = name
思路：
count 是Student的类属性 是可以被Student类调用的
name 是实例化属性，每次创建一个实例化对象时，都需要调用一次init函数，传入name的值。
如果Student.count 在每次self.name被调用后，都自增运行一次，就可以实现创建一个实例化对象类属性自增
'''
class Student(object):
    count = 0
    def __init__(self, name):
        self.name = name
        Student.count=Student.count+1

stu1=Student('rita')
stu2=Student('mao')
stu3=Student('xiaohong')

print(Student.count)


'''
请设计一个装饰器，它可以作用于任何函数上，
打印函数执行时间： 
import time 
def metric(fn):  
    start_time = time.time()  
    end_time = time.time() 
    print('耗时：{:.4f}s'.format(end_time - start_time)) 
    return fn 
'''
import time                                #引入time
def metric(fn):                            #fn相当于下面的fib函数
    def start_func(*args,**kwargs):        # 定义一个函数，用来计算运行fib函数的时间
        start_time = time.time()           #开始时间
        time.sleep(1)                      #因为下面函数运行时间太短，所以为了效果在这里用延迟1秒的函数
        fn(*args,**kwargs)                 #运行函数
        end_time = time.time()
        print(' ')
        print('耗时：{:.4f}s'.format(end_time - start_time))    #保留4个小数点
    return start_func


#用装饰器计算下面这个函数的运行时间

@metric                                     # 用计算函数运行时间的装饰器计算下方函数
def fib(max):
    n, a, b = 0, 0, 1
    while n < max:
        print(b,end=' ')
        a, b = b, a + b
        n = n + 1
    return 'done'

fib(10)